/*
 * Copyright 2010 Michael Nitsche
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package de.mnit.basis.swt.dialog;

import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;

import de.mnit.basis.daten.struktur.container.Engpass;
import de.mnit.basis.swt.element.steuer.rollbar.gruppe.bild.deko.S_Fenster;
import de.mnit.basis.sys.datei.S_Ordner;


/**
 * @author Michael Nitsche
 * 22.09.2007	Erstellt
 */
public class SWT_Dialog {

	public static Boolean frage_JaNein(String text) {
		SWT_Meldung m=SWT_Meldung.neu(text);
		m.sTyp_Frage();
		return iFrage(m);
	}

	public static Boolean warnung_JaNein(String text) {
		SWT_Meldung m=SWT_Meldung.neu(text);
		m.sTyp_Warnung();
		return iFrage(m);
	}

	public static String frage_Text(String text) {
		return new Dialog_Text(text).gErgebnis();
	}

	public static String frage_Text(S_Fenster<?> fenster, String titel) {
		return new Dialog_Text(titel).gErgebnis(fenster);
	}

	public static String frage_Text(S_Fenster<?> fenster, String titel, String init) {
		return new Dialog_Text(titel, init).gErgebnis(fenster);
	}

	/**
	 * Mit Fenster, sonst wird der Dialog nicht zentriert und klebt links oben in der Ecke!
	 */
	public static Boolean frage_Frei(S_Fenster<?> fenster, String text, String ja, String nein) {
		return new Dialog_FrageFrei(text).sKnopf1(ja).sKnopf2(nein).gErgebnis(fenster);
	}

	public static void hinweis(String text) {
		SWT_Meldung.schnell(text);
	}

//	public static void fehler(String text) {   // SWT_Fehler verwenden!
//		SWT_Meldung.neu(text).sTyp_Fehler().oeffnen();
//	}

	public static void warnung(String text) {
		SWT_Meldung.neu(text).sTyp_Warnung().oeffnen();
	}

	public static String[] frage_Datei(String titel) { //Sehr allgemein!
		return new SWT_Dialog_Datei(titel).gErgebnis();
	}

	public static String[] frage_DateiOeffnen(String titel, boolean mehrere, String... filter) {
		return new SWT_Dialog_Datei(titel, mehrere, filter).s1_Oeffnen().gErgebnis();
	}

	public static String[] frage_DateiSpeichern(String titel, String... filter) {
		return new SWT_Dialog_Datei(titel, false, filter).s1_Speichern().gErgebnisSuffix();
	}

	public static S_Ordner frage_Ordner(String titel) {
		return new SWT_Dialog_Ordner(titel).gErgebnis();
	}

//	public static S_Datum frage_Datum(String titel) {
//		return new Dialog_Datum(titel).gErgebnis();
//	}


	private static Boolean iFrage(SWT_Meldung m) {
		final Engpass<Boolean> erg=Engpass.neu();
			m
			.sKnopf_Ja(new Listener(){
				public void handleEvent(Event event) {
					erg.s(true);
				}
			})
			.sKnopf_Nein(new Listener(){
				public void handleEvent(Event event) {
					erg.s(false);
				}
			})
			.oeffnen(true);
		return erg.g();
	}

}
